POV-Ray : Newsgroups : povray.binaries.images : Blurred apophysis meets traced cylinders : Blurred apophysis meets traced cylinders Server Time
1 Aug 2024 00:17:28 EDT (-0400)
  Blurred apophysis meets traced cylinders  
From: Peter Hertel
Date: 18 Feb 2009 11:15:01
Message: <web.499c335881b8128e2611931b0@news.povray.org>
Mid-week abstract anyone?
Just a small test, which uses a few techniques which perhaps might be of
interest for some?
First, it's a simple way of randomly placing a lot of objects without them
intersecting. The code should speak for itself, but I don't know if this method
is entirely bulletproof?
Second, I wanted to use an image I did with apophysis (
http://www.apophysis.org/ ). The resolution was a bit too low though, and I
lost the settings to remake it. So I blurred it by averaging the image several
times in a while loop. I've blurred procedural textures this way before, but it
works quite well with image_maps also.

I'd love to see some "remixes" of this scene! The source is below, and I can
post the background image if anyone's interested.
(Pinnedyr means phasmatodea/walking sticks in Norwegian).

-Peter

// +w1920 +h1200 +a0.3
// +w1920 +h400 +a0.3

camera{
        ultra_wide_angle
        location <1,3,-5>*0.3 look_at y*1 angle 130
        sky vrotate (<0,1,0>,z*40)
        translate <-1,-0.5,-1>

        right x*image_width/image_height
        up y
}

light_source{<5,15,-10>1}

#local TO = plane{y,0} // Trace Object

#local Radius = 0.025; // Radius of cylinders

#local S = seed(1337);

#local X = 0;
#while (X<1)
        #local Shoot_Start     =
vrotate(<1-rand(S)*0.5,3+sin(X*4*pi)*0.1+rand(S)*0.2,0>,y*360*rand(S));
        #local Shoot_Direction =
vrotate(<-Shoot_Start.x+rand(S)*0.1,-1.3-rand(S)*0.5,-Shoot_Start.z+rand(S)*0.1>,y*10*rand(S));
        #local Shoot_End       = trace(TO,Shoot_Start,Shoot_Direction);

        #if(Shoot_End.y=0) // If it hits the plane in TO
                #ifndef(OBJ) // Final OBJect
                        #local OBJ = merge{
                #else
                        #local OBJ = merge{object{OBJ}
                #end
                        cylinder{Shoot_Start,Shoot_End,Radius}
                        sphere{Shoot_Start,Radius}
                        sphere{Shoot_End,Radius}
                }
                #local TO =
                union{
                        object{TO}
                        cylinder{Shoot_Start,Shoot_End,Radius*2} // Radius
doubled to avoid collision
                }
        #end
#local X = X+0.001; // Decrease to shoot more cylinders
#end

object{OBJ
        texture{
                pigment {rgb 0.9 filter 0.9}
                finish{reflection {0.2,0.6} ambient 0.1 specular 0.4 phong 0.3
irid{0.25 thickness 1}}
        }
        interior{ior 1.255 fade_color x*2 fade_power 2}
}

#local AP = 0.05; // increase/decrease to blur less/more
// These settings worked well for my 1920x1200 image_map
sky_sphere{
        pigment{
        average
                pigment_map{
                        #local X = 0;
                        #while (X<1)
                                [AP+X*AP, image_map{png
"Apophysis-081026-214_1000.png" interpolate 2 map_type 1}rotate y*(35+1*X)]
                        #local X = X+AP;
                        #end
                }
        }
}


Post a reply to this message


Attachments:
Download 'pinnedyr_01.jpg' (129 KB)

Preview of image 'pinnedyr_01.jpg'
pinnedyr_01.jpg


 

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.